package cn.tedu.hotel.serve.service;

import cn.tedu.hotel.serve.pojo.dto.*;
import cn.tedu.hotel.serve.pojo.vo.AdminUserVO;
import cn.tedu.hotel.serve.pojo.vo.UserStandardVO;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Transactional
public interface IUserService {
    /**
     * 0为禁用，1为启用
     */
    int ENABLE_NUM[] = {0, 1};
    /**
     * 用户权限
     */
    String PERMISSION = "userRoot";

    /**
     * 注册用户
     *
     * @param userRegisterDTO
     */
    void addNew(UserRegisterDTO userRegisterDTO);

    /**
     * 用户登录
     *
     * @param userLoginInfoDTO
     */
    String Login(UserLoginInfoDTO userLoginInfoDTO);

    /**
     * 客户个人修改用户信息
     * @param userUpdateDTO
     */
    void updateInfoById(Long id,UserUpdateDTO userUpdateDTO);

    /**
     * 客户修改个人密码
     * @param id
     * @param userUpdatePasswordDTO
     */
    void updateUserPassword(Long id, UserUpdatePasswordDTO userUpdatePasswordDTO);

    /**
     * 根据id查找User
     * @param id id
     * @return
     */
    UserStandardVO getStandardById(Long id);

    /**
     * 管理员查看User列表
     * @return User列表
     */
    List<AdminUserVO> getAdminUserVOList();

    //TODO 测试用的，记得删掉
    int count();

    void setEnable(Long id);

    void setDisable(Long id);

    void adminUpdateUser(Long userId, AdminUserDTO adminUserDTO);

    AdminUserVO getAdminUserVOById(Long id);

    void deleteById(Long id);
}
